// -----------------------------------------------------------------------------
// Copyright (c) 2014-2023 All rights reserved
// *********************************************************************************
// Project Name : Vector
// Author       : DFY
// File Name    : Vector.v
// Abstract     : didvde-2
module Vector (
	input  wire [31:0] 	data_in,
	output wire [ 5:0]  pos_out	
);

//=================================================================================
// Signal and Parameter declaration
//=================================================================================
wire [15:0] data_16;
wire [ 7:0] data_8;
wire [ 3:0] data_4;
wire [ 1:0] data_2;
wire [ 4:0] temp_out;
//=================================================================================
// Body
//=================================================================================
assign temp_out[4]	= 	|data_in[31:16];
assign data_16	 	=	temp_out[4]?data_in[31:16]:data_in[15:0];

assign temp_out[3]	= 	|data_16[15:8];
assign data_8	 	=	temp_out[3]?data_16[15:8]:data_16[7:0];

assign temp_out[2]	= 	|data_8[7:4];
assign data_4	 	=	temp_out[2]?data_8[7:4]:data_8[3:0];

assign temp_out[1]	= 	|data_4[3:2];
assign data_2	 	=	temp_out[1]?data_4[3:2]:data_4[1:0];

assign temp_out[0]	= 	data_2[1];

assign pos_out[5] 		=	~|data_2[1:0];
assign pos_out[4:0] 	=	pos_out[5]?5'b0:~temp_out[4:0];
endmodule 

